View Javadoc
1 /************************************************************ 2 * Copyright * 3 * Portions of this software are Copyright (c) 1993 - 2002, * 4 * Chad Z. Hower (Kudzu) and the Indy Pit Crew * 5 * - http://www.nevrona.com/Indy/ * 6 ************************************************************/ 7 package org.indy; 8 9 import org.indy.util.StringList; 10 11 12 /*** 13 * <code>Command</code> represents information about commands received 14 * by a {@link TCPServer} for an executing {@link PeerThread}, 15 * and handled using a {@link CommandHandler}. 16 * 17 * <code>Command</code> provides properties that identify the Thread generating the command, and the CommandHandler used to service the command. In addition, TIdCommand also implements methods that allow assigning the response for the command, and a mechanism for sending the command reply using the 18 * thread connection that generated the command request. 19 * 20 * <code>Command</code> instances are created in {@link CommandHandler#check(String,PeerThread)} 21 * when a given command can be handled by the <code>CommandHandlers</code> 22 * for the server, using the <code>PeerThread</code> that is executed in the 23 * <code>TCPServer</code> context. 24 * 25 * 26 *@author OTG 27 *@version 1.0 28 * 29 *@see CommandHandler 30 *@see CommandHandler#check(String,PeerThread) 31 *@see TCPServer 32 *@see PeerThread 33 *@see RFCReply 34 */ 35 public final class CommandEvent { 36 private CommandHandler commandHandler; 37 private boolean performReply; 38 private StringList params = new StringList(); 39 private String rawLine; 40 private RFCReply reply; 41 private final StringList response = new StringList(); 42 private PeerThread thread; 43 private String unparsedParams; 44 45 /*** 46 * Constructs a new, blank, <code>CommandEvent</code> instance. 47 */ 48 CommandEvent() { 49 } 50 51 /*** 52 * Sets whether or not the {@link RFCReply} returned 53 * by {@link getReply()} should be sent back to the peer. 54 * 55 *@param performReply The new performReply value 56 *@see getPerformReply() 57 *@see getReply() 58 *@see RFCReply 59 */ 60 public void setPerformReply(boolean performReply) { 61 this.performReply = performReply; 62 } 63 64 /*** 65 * Sets the {@link RFCReply} to be sent back to the peer. 66 * 67 * @param reply The new {@link RFCReply} obect to use. 68 * @see #getReply() 69 * @see RFCReply 70 */ 71 public void setReply(RFCReply reply) { 72 this.reply = new RFCReply(reply); 73 } 74 75 /*** 76 * Sets the {@link IdStrings} to use as a resopnse for this command 77 * 78 *@param response The new response value 79 */ 80 public void setResponse(StringList response) { 81 this.response.copy(response); 82 } 83 84 /*** 85 * CommandHandler is a read-only {@link CommandHandler} 86 * property that represents the command handler that 87 * created the <code>CommandEvent</code> object instance. 88 * 89 * The <code>CommandHandler</code> is assigned when the 90 * object instance is created as the peer thread 91 * is executed in {@link CommandHandler#check(String,PeerThread)}. 92 * 93 *@return This <code>CommandEvent</code> handler. 94 *@see CommandHandler 95 * 96 */ 97 public CommandHandler getCommandHandler() { 98 return commandHandler; 99 } 100 101 /*** 102 * Returns whether the {@link RFCReply} returned by 103 * {@link #getReply()} should be sent back to the peer 104 * in reponse. 105 * 106 *@return Whether this command is set to reply or not. 107 *@see getPeformReply 108 *@see RFCReply 109 */ 110 public boolean getPerformReply() { 111 return performReply; 112 } 113 114 /*** 115 * Returns the parameters associated with this <code>Command</code> 116 * as a {@link org.indy.util.StringList}. 117 * 118 * If the creating {@link CommandHandler} had it's <code>parseParams</code> 119 * property set to <code>true</code> then the <code>StringList</code> 120 * will contain the parameters tokenised using the <code>CommandHandler<code>'s 121 * command delimiter. Otherwise the list will just contain the unparsed 122 * parameteters as a single string. 123 * 124 *@return A collection of strings representing the parameters sent with this command. 125 */ 126 public StringList getParams() { 127 return params; 128 } 129 130 /*** 131 * Gets the raw line that was sent to the server for this command. 132 * 133 *@return The raw line that was sent to the server for this command. 134 */ 135 public String getRawLine() { 136 return rawLine; 137 } 138 139 /*** 140 * Gets the {@link org.indy.RFCReply} associated with this command. 141 * 142 *@return The associated <code>RFCReply</code> object. 143 */ 144 public RFCReply getReply() { 145 return reply; 146 } 147 148 /*** 149 * Gets the response attribute of this <code>Command</code> as a {@link org.indy.util.StringList} 150 * 151 *@return The response value 152 */ 153 public StringList getResponse() { 154 return response; 155 } 156 157 /*** 158 * Gets the {@link PeerThread} that is handling this command. 159 * 160 *@return The <code>PeerThread</code> that is handling this command. 161 */ 162 public PeerThread getThread() { 163 return thread; 164 } 165 166 /*** 167 * Returns the parameters sent to the server as an unparsed string. 168 * 169 * @return The unparsed parameters sent to the server. 170 */ 171 public String getUnparsedParams() { 172 return unparsedParams; 173 } 174 175 /*** 176 * Forces the command to send a reply back to the client. 177 * 178 *@throws IndyException If an exception occurs whilst writing the reply to the socket. 179 */ 180 public void sendReply() throws IndyException { 181 performReply = false; 182 commandHandler.getCommandHandlers().getServer().getReplyTexts() 183 .updateText(this.reply); 184 thread.getConnection().writeRFCReply(reply); 185 } 186 187 /*** 188 * Sets the {@link PeerThread} that this <code>Command</code> is being handled by. 189 * 190 * @param thread The <code>PeerThread</code> that this command is being handled by. 191 */ 192 void setThread(PeerThread thread) { 193 this.thread = thread; 194 } 195 196 /*** 197 * Sets the raw character data for this command. 198 * 199 * @param rawLine The raw character data for this command 200 */ 201 void setRawLine(String rawLine) { 202 this.rawLine = rawLine; 203 } 204 205 /*** 206 * Sets the {@link CommandHandler} that is proessing this command 207 * 208 * @param commandHandler The <code>CommandHandler</code> that is handling this <code>Command</code> 209 * @see #getCommandHandler() 210 */ 211 void setCommandHandler(CommandHandler commandHandler) { 212 this.commandHandler = commandHandler; 213 } 214 215 /*** 216 * DOCUMENT ME! 217 * 218 * @param unparsedParams DOCUMENT ME! 219 */ 220 void setUnparsedParams(String unparsedParams) { 221 this.unparsedParams = unparsedParams; 222 } 223 }

This page was automatically generated by Maven